package com.zjsru.studyplan1;

/**
 * 位1的个数
 * <p>
 * 输入：11111111111111111111111111111101
 * 输出：31
 * 解释：输入的二进制串 11111111111111111111111111111101 中，共有 31 位为 '1'。
 */
public class hammingWeight {
    public int hammingWeight(int n) {
        int ret = 0;
        while (n != 0) {
            n &= n - 1;
            ret++;
        }
        return ret;

        /**
         * 循环检查二进制方法
         *
         *         int ret = 0;
         *         for (int i = 0; i < 32; i++) {
         *             if ((n & (1 << i)) != 0) {
         *                 ret++;
         *             }
         *         }
         *         return ret;
         *
         *
         * */
    }

    public static void main(String[] args) {
        hammingWeight hammingWeight = new hammingWeight();
        int n = 11111;
        System.out.println(hammingWeight.hammingWeight(n));
    }
}
